home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / tag_bbs / tagr26d.zip / TAGR26D.H < prev    next >
C/C++ Source or Header  |  1993-01-24  |  54KB  |  1,151 lines

  1. /*****************************************************************************/
  2. /* T.A.G. Bulletin Board System                                              */
  3. /* Copyright (c) 1986-1993 by The T.A.G. Team                                */
  4. /* All rights reserved.                                                      */
  5. /*                                                                           */
  6. /*                    -----------------------------------                    */
  7. /*                    T.A.G. Version 2.6d Data Structures                    */
  8. /*                    -----------------------------------                    */
  9. /*             Converted from Turbo Pascal to C by Martin Pollard            */
  10. /*                                                                           */
  11. /* All we ask if you use these record structures is to give credit where     */
  12. /* credit is due.                                                            */
  13. /*                                                                           */
  14. /* Additional structure information may be given out on an individual        */
  15. /* basis depending on the situation.                                         */
  16. /*                                                                           */
  17. /*---------------------------------------------------------------------------*/
  18. /*                                                                           */
  19. /* NOTES TO PROGRAMMERS:                                                     */
  20. /*                                                                           */
  21. /* Turbo Pascal strings are formatted differently than C strings:            */
  22. /*                                                                           */
  23. /*      Turbo Pascal:   length byte + string data                            */
  24. /*      C:              string data + '\0' (zero)                            */
  25. /*                                                                           */
  26. /* You will have to write conversion routines to convert strings back and    */
  27. /* forth between TP and C formats if you wish to use strings.                */
  28. /*                                                                           */
  29. /* Also, C has no direct equivalent to Turbo Pascal's "real" type for real   */
  30. /* numbers (C's "float" and "double" do not use the same format).  If you    */
  31. /* wish to use real numbers, you will have to write conversion routines.     */
  32. /*                                                                           */
  33. /* NOTE THAT THERE IS NO ATTEMPT HERE TO TEACH YOU HOW TO ACCESS T.A.G. DATA */
  34. /* FILES USING THE C LANGUAGE.  IT IS ASSUMED THAT YOU ALREADY KNOW HOW TO   */
  35. /* PROGRAM IN C, AND ARE FAMILIAR WITH THE INS AND OUTS OF ACCESSING FIXED-  */
  36. /* LENGTH RECORD DATA FILES (SUCH AS THE ONES T.A.G. USES).                  */
  37. /*                                                                           */
  38. /*****************************************************************************/
  39.  
  40. #ifndef __TAGREC_H      /* Prevents header from being included */
  41. #define __TAGREC_H      /* twice in the same program or module */
  42.  
  43. typedef unsigned char Boolean;  /* C equivalent for TP "boolean" type */
  44.                                 /* (0 is FALSE, non-0 is TRUE)        */
  45. typedef unsigned char Byte;     /* C equivalent for TP "byte" type */
  46. typedef unsigned char Char;     /* C equivalent for TP "char" type  */
  47.                                 /* (ensures values in 0..255 range) */
  48. typedef int Integer;            /* C equivalent for TP "integer" type */
  49. typedef long Longint;           /* C equivalent for TP "longint" type */
  50. typedef unsigned int Word;      /* C equivalent for TP "word" type */
  51.  
  52. typedef unsigned char Real[6];  /* C has no equivalent for TP "real" type! */
  53.  
  54. typedef unsigned int Bit;       /* shorthand operator for bit fields   */
  55.                                 /* (ensures returning positive values) */
  56.  
  57. /*---------------------------------------------------------------------------*/
  58.  
  59. /***************************************************************************/
  60. /* The following values are used by the system for user fields             */
  61. /* "ask"  values will be asked of the user the next time they logon if the */
  62. /*        question is part of the new user logon                           */
  63. /* "none" values are normally for optional fields where the user simply    */
  64. /*        pressed <enter>                                                  */
  65. /***************************************************************************/
  66.  
  67. #define USER_STRING_ASK     " "     /* Ask for user string fields */
  68. #define USER_STRING_NONE    ""      /* None for user string fields */
  69. #define USER_DATE_ASK       0xFE21  /* Ask for user date fields - 1/1/2027 */
  70. #define USER_DATE_NONE      0x0021  /* None for user date fields - 1/1/0 */
  71. #define USER_WORD_ASK       65535U  /* Ask for user word fields */
  72. #define USER_WORD_NONE      65534U  /* None for user word fields */
  73. #define USER_CHAR_ASK       '~'     /* Ask for user character fields */
  74. #define USER_CHAR_NONE      ' '     /* None for user character fields */
  75. #define USER_PHONE_ASK      " "     /* Ask for user phone fields */
  76. #define USER_PHONE_NONE     ""      /* None for user phone fields */
  77.  
  78. /*---------------------------------------------------------------------------*/
  79.  
  80. #define DYN_DEFAULT     0           /* Default */
  81. #define DYN_YES         1           /* Yes */
  82. #define DYN_NO          2           /* No */
  83.  
  84. typedef Byte DefaultYesNoType;     /* Default/yes/no type */
  85.  
  86. typedef Char ArFlagType;        /* AR flags (@..Z) */
  87. typedef Byte ArFlagset[4];      /* Set of AR flags                 */
  88.                                 /* Byte 0 = bits 0..7 = Flags @..G */
  89.                                 /* Byte 1 = bits 0..7 = Flags H..O */
  90.                                 /* Byte 2 = bits 0..7 = Flags P..W */
  91.                                 /* Byte 3 = bits 0..2 = Flags X..Z */
  92.  
  93. typedef struct      /* User special flags */
  94. {
  95.     Bit AutoPrivDel : 1;    /* A = Force user to delete private mail */
  96.     Bit NoPostCall : 1;     /* B = No post call ratio */
  97.     Bit ForceULScan : 1;    /* C = Force this user to automatically scan */
  98.                             /*     when uploading */
  99.     Bit Ranon : 1;          /* D = Restrict from posting anonymous */
  100.     Bit RbbsList : 1;       /* E = Restrict from adding to other BBS list */
  101.     Bit Rchat : 1;          /* F = Restrict from chatting */
  102.     Bit NoDLlimit : 1;      /* G = No download ratio limit */
  103.     Bit RpubMsg : 1;        /* H = Restrict from posting public mail */
  104.     Bit RprivMsg : 1;       /* I = Restrict from sending private mail */
  105.     Bit Rvoting : 1;        /* J = Restrict from voting */
  106.     Bit OneCall : 1;        /* K = One call per day allowed */
  107.     Bit PubNotVal : 1;      /* L = Public posts are not validated */
  108.     Bit ProtDel : 1;        /* M = Protect from deletion */
  109.     Bit NoFilePts : 1;      /* N = No file point checks */
  110.     Bit RfileVal : 1;       /* O = Credit from upload on validation */
  111.     Bit Pause : 1;          /* P = [PAUSE] active */
  112.     Bit Ansi : 1;           /* Q = ANSI graphics active */
  113.     Bit Color : 1;          /* R = Color active if ANSI present */
  114.     Bit OneKey : 1;         /* S = Onekey input used instead of line input */
  115.     Bit Alert : 1;          /* T = Alert active from user's next call */
  116.     Bit FlagRecUnused : 1;  /* U = Reserved */
  117.     Bit MboxClosed : 1;     /* V = Mail box closed to all but SysOp's */
  118.     Bit Tabs : 1;           /* W = VT100 tabs are used to optimize display */
  119.     Bit ClsChar : 1;        /* X = Clear screen characters used */
  120. }
  121. FlagSet;    /* 3 bytes used for 24 flags in set */
  122.  
  123. typedef struct
  124. {
  125.     Bit IsCdRom : 1;
  126.     Bit uuUlRecFlag1 : 1;
  127.     Bit uuUlRecFlag2 : 1;
  128.     Bit uuUlRecFlag3 : 1;
  129.     Bit uuUlRecFlag4 : 1;
  130.     Bit uuUlRecFlag5 : 1;
  131.     Bit uuUlRecFlag6 : 1;
  132.     Bit uuUlRecFlag7 : 1;
  133. }
  134. UlRecFlagSet;
  135.  
  136. typedef struct      /* User configuration flags */
  137. {
  138.     Bit UseCustomMenus : 1;     /* A = Allow custom ANSI menus */
  139.     Bit ClsMsgRead : 1;         /* B = Clear screen between reading messages */
  140.     Bit DoNotDisturbUser : 1;   /* C = Do not disturb user (multi-user only) */
  141.     Bit uuCFFlag21 : 1;         /* D = Reserved */
  142.     Bit uuCFFlag20 : 1;         /* E = Reserved */
  143.     Bit uuCFFlag19 : 1;         /* F = Reserved */
  144.     Bit uuCFFlag18 : 1;         /* G = Reserved */
  145.     Bit uuCFFlag17 : 1;         /* H = Reserved */
  146.     Bit uuCFFlag16 : 1;         /* I = Reserved */
  147.     Bit uuCFFlag15 : 1;         /* J = Reserved */
  148.     Bit uuCFFlag14 : 1;         /* K = Reserved */
  149.     Bit uuCFFlag13 : 1;         /* L = Reserved */
  150.     Bit uuCFFlag12 : 1;         /* M = Reserved */
  151.     Bit uuCFFlag11 : 1;         /* N = Reserved */
  152.     Bit uuCFFlag10 : 1;         /* O = Reserved */
  153.     Bit uuCFFlag9 : 1;          /* P = Reserved */
  154.     Bit uuCFFlag8 : 1;          /* Q = Reserved */
  155.     Bit uuCFFlag7 : 1;          /* R = Reserved */
  156.     Bit uuCFFlag6 : 1;          /* S = Reserved */
  157.     Bit uuCFFlag5 : 1;          /* T = Reserved */
  158.     Bit uuCFFlag4 : 1;          /* U = Reserved */
  159.     Bit uuCFFlag3 : 1;          /* V = Reserved */
  160.     Bit uuCFFlag2 : 1;          /* W = Reserved */
  161.     Bit uuCFFlag1 : 1;          /* X = Reserved */
  162. }
  163. ConfigFlagSet;      /* 3 bytes used for 24 flags in set */
  164.  
  165. /************************************************/
  166. /* ColorRec = Array of B&W / Color  Color Bytes */
  167. /************************************************/
  168.  
  169. typedef Byte ColorRec[2][10];   /* ColorRec[0][x] = B&W          */
  170.                                 /* ColorRec[1][x] = Color        */
  171.                                 /* x = 0..9 = Actual Color Codes */
  172.  
  173. /*---------------------------------------------------------------------------*/
  174.  
  175. typedef struct      /* User name index - NAMES.LST */
  176. {
  177.     Char Name[37];      /* User name */
  178.     Integer Number;     /* User number */
  179. }
  180. SmalRec;
  181.  
  182. /*---------------------------------------------------------------------------*/
  183.  
  184. typedef struct      /* User log - USER.LST */
  185. {
  186.     Char Uname[37];             /* User name */
  187.     Char Rname[37];             /* Real name */
  188.     Char ADDR[31];              /* Address */
  189.     Char ComType[31];           /* Computer type */
  190.     Char CityState[31];         /* City/State */
  191.     Char Snote[31];             /* SysOp note */
  192.  
  193.     Word LastDate;              /* Last date on - Semi-MS-DOS 1900 based fmt */
  194.     Word LastTime;              /* Last time on - MS-DOS format */
  195.  
  196.     Char PW[17];                /* Password */
  197.     Char Phone[13];             /* Phone number 1 */
  198.     Char Zcode[11];             /* Zip code */
  199.     Char Phone2[13];            /* Phone number 2 */
  200.  
  201.     Char ExtraStr1[41];         /* Extra string 1 */
  202.     Char ExtraStr2[41];         /* Extra string 2 */
  203.     Char ExtraStr3[41];         /* Extra string 3 */
  204.  
  205.     Word ExtraDate1;            /* Extra date 1 - Semi-MS-DOS 1900 based fmt */
  206.     Word ExtraDate2;            /* Extra date 2 - Semi-MS-DOS 1900 based fmt */
  207.  
  208.     Word ExtraWord1;            /* Extra word 1 */
  209.     Word ExtraWord2;            /* Extra word 2 */
  210.     Word ExtraWord3;            /* Extra word 3 */
  211.     Word ExtraWord4;            /* Extra word 4 */
  212.  
  213.     Char ExtraChar1;            /* Extra character 1 */
  214.     Char ExtraChar2;            /* Extra character 2 */
  215.     Char ExtraChar3;            /* Extra character 3 */
  216.     Char ExtraChar4;            /* Extra character 4 */
  217.  
  218.     Char ExtraPhone[13];        /* Extra phone */
  219.  
  220.     Byte uureserved[3];         /* Reserved */
  221.  
  222.     /*************************************************************/
  223.     /* Vote  = An array of Voting Answers, One for each question */
  224.     /*************************************************************/
  225.  
  226.     Byte Vote[20];              /* Voting */
  227.  
  228.     /**********************************************************************/
  229.     /* Call spread for last 15 calls - Number  of days between each call: */
  230.     /* 0      = Called the same day                                       */
  231.     /* 1..253 = X number of days between                                  */
  232.     /* 254    = 254 or more days between                                  */
  233.     /* 255    = Element not used yet                                      */
  234.     /**********************************************************************/
  235.  
  236.     Byte CallSpr[15];           /* Call spread */
  237.  
  238.     Real Ttimeon;               /* Total time on system in minutes */
  239.     Real UlK;                   /* UL K-Bytes */
  240.     Real Dlk;                   /* DL K-Bytes */
  241.  
  242.     /**********************************************************/
  243.     /* UserNum = The User number                              */
  244.     /*           0  -----------------------------> Deleted    */
  245.     /*           Same as Record Number ----------> Normal     */
  246.     /*           Different from Record Number ---> Locked Out */
  247.     /**********************************************************/
  248.  
  249.     Integer UserNum;            /* User number */
  250.  
  251.     Word PrivPost;              /* Private posts */
  252.     Word PubPost;               /* Public posts */
  253.     Word FeedBack;              /* Feedback sent to SysOp */
  254.     Word NumCalls;              /* Total number of calls to system */
  255.     Word NumUL;                 /* Number of uploads */
  256.     Word NumDL;                 /* Number of downloads */
  257.  
  258.     /*********************************************************/
  259.     /* Fmail = Status of Mail Forwarding                     */
  260.     /*           0  --------> Forwarding inactive            */
  261.     /*           Other  ----> User Number to forward mail to */
  262.     /*********************************************************/
  263.  
  264.     Integer Fmail;              /* Forward mail to which user number */
  265.  
  266.     Word Hbaud;                 /* Highest baud rate user supports */
  267.     Word TimeToday;             /* Minutes on system date of last call */
  268.     Word Credit;                /* Credit for mail in cents */
  269.     Word Debit;                 /* Debit for mail in cents */
  270.     Word Points;                /* File points */
  271.     Word TimeBank;              /* Minutes in time bank */
  272.     Word Bday;                  /* Birthdate of user - Semi-MS-DOS format */
  273.     Word LastChange;            /* Reserved */
  274.  
  275.     Byte StrtMenu;              /* Reserved */
  276.     Byte SL;                    /* Security level - SL */
  277.     Byte DSL;                   /* Download security level - DSL */
  278.     Byte Hlvl;                  /* Help level */
  279.     Byte Colms;                 /* Number of screen columns */
  280.     Byte Lines;                 /* Number of screen lines */
  281.     Byte Callstoday;            /* Number of calls to system today */
  282.     Byte Illegal;               /* Illegal logon attempts */
  283.  
  284.     Char Gender;                /* User gender M/F/' '=not specified */
  285.  
  286.     Byte uulMsgBase;            /* Last message base */
  287.     Byte uuLdlBase;             /* Last file section */
  288.     Byte Cls;                   /* Reserved */
  289.  
  290.     DefaultYesNoType FullEdit;  /* Full screen editor status */
  291.  
  292.     ArFlagset Ar;               /* AR flag set */
  293.  
  294.     FlagSet Flags;              /* Special flag set */
  295.  
  296.     Word FirstOn;               /* Date first on - Semi-MS-DOS format */
  297.     Word Expires;               /* Date expires - Semi-MS-DOS format */
  298.  
  299.     Byte UserRecUnused[29];     /* Reserved */
  300.  
  301.     ColorRec Colors;            /* User colors */
  302.  
  303.     Byte TBdeposit;             /* Time deposited in bank last call */
  304.     Byte TBwithdraw;            /* Time withdraw from bank last call */
  305.  
  306.     Integer AdjTime;            /* Adjusted time date of last call */
  307.  
  308.     ConfigFlagSet ConfigFlags;  /* Configuration Flags */
  309.  
  310.     Word lMbase;                /* Last message section */
  311.     Word lFbase;                /* Last file section */
  312.  
  313.     Byte Unused[5];             /* Reserved */
  314. }
  315. UserRec;
  316.  
  317. /*---------------------------------------------------------------------------*/
  318.  
  319. typedef struct      /* Short messages - SHORTMSG.DAT */
  320. {
  321.     Char Msg[161];      /* Message text */
  322.     Integer Destin;     /* User number of who message is to */
  323. }
  324. SmallMessageRec;
  325.  
  326. /*---------------------------------------------------------------------------*/
  327.  
  328. typedef struct      /* Voting questions - VOTING.DAT */
  329. {
  330.     Char Question[75];      /* Question */
  331.     Word NumA;              /* Number of answers in below array */
  332.     struct                  /* Array of answer data */
  333.     {
  334.         Char Ans[41];       /* Answer */
  335.         Word NumRes;        /* Number of users who chose this response */
  336.     }
  337.     Answ[10];
  338. }
  339. Vdatar;
  340.  
  341. /*---------------------------------------------------------------------------*/
  342.  
  343. typedef struct      /* File section - FBOARDS.DAT */
  344. {
  345.     Char Name[40];          /* Section name 26 Real Len, Rest Colors */
  346.     Char Filename[9];       /* Listing filename (does not include ".DIR")  */
  347.                             /*   If UL and DL paths are different,         */
  348.                             /*     filename for upload section is "FILES"  */
  349.                             /*   If first character is "@" then *.DIR file */
  350.                             /*     is found in main data files directory   */
  351.     Char DlPathname[31];    /* Download pathname */
  352.     Char UlPathName[31];    /* Upload pathname */
  353.     Char Password[16];      /* Password required */
  354.     UlRecFlagSet Flags;
  355.     Byte DSL;               /* DSL required */
  356.     Byte SeeNames;          /* DSL required to see uploader names */
  357.     ArFlagType ArLvl;       /* AR flag required */
  358.     Byte NoRatioGroupNum;   /* Bit 0    = Ratio disabled */
  359.                             /* Bits 1-7 = Group number */
  360. }
  361. UlRec;
  362.  
  363. /*---------------------------------------------------------------------------*/
  364.  
  365. typedef struct      /* Set of file flags */
  366. {
  367.     Bit NotValidated : 1;       /* File is not validated */
  368.     Bit OwnerRestricted : 1;    /* Uploader did not receive credit on upload */
  369.     Bit uuF6 : 1;               /* Reserved */
  370.     Bit uuF5 : 1;               /* Reserved */
  371.     Bit uuF4 : 1;               /* Reserved */
  372.     Bit uuF3 : 1;               /* Reserved */
  373.     Bit uuF2 : 1;               /* Reserved */
  374.     Bit uuF1 : 1;               /* Reserved */
  375. }
  376. FlagRecSet;     /* 1 byte used for 8 flags in set */
  377.  
  378. typedef struct      /* File listing - *.DIR */
  379. {
  380.     Char Filename[13];      /* File name */
  381.     Char Description[79];   /* Description */
  382.     Word Nacc;              /* Number of times file downloaded */
  383.     Byte Unused;            /* Reserved */
  384.     Word Blocks;            /* Number of 128 byte blocks in file */
  385.     Char Owner[37];         /* Uploader of file */
  386.     Char Date[9];           /* Date file uploaded */
  387.     Word DateN;             /* Date uploaded in days since Jan 1, 1985 */
  388.     FlagRecSet Flag;        /* File status */
  389.     Byte Points;            /* File points */
  390. }
  391. UlfRec;
  392.  
  393. /*---------------------------------------------------------------------------*/
  394.  
  395. #define NUMSHELLFILES       13  /* # currently defined internal shell files */
  396.  
  397. typedef struct
  398. {
  399.     DefaultYesNoType useswap;   /* Swap shell setting */
  400.     struct                      /* Shell file flags */
  401.     {
  402.         Bit shellshowcall : 1;
  403.         Bit shelllogcall : 1;
  404.     }
  405.     flags;
  406. }
  407. shellfilerec;
  408.  
  409. typedef shellfilerec                    /* Array of shell files */
  410.         shellfilelist[NUMSHELLFILES];
  411.  
  412. #define NUMNEWUSERQUESTS    29  /* Number of current new user questions */
  413.  
  414. typedef struct
  415. {
  416.     Byte itemnum;       /* Item number to ask or 0=inactive */
  417.     Boolean required;   /* Required/optional */
  418. }
  419. newuserquestrec;
  420.  
  421. typedef newuserquestrec                         /* Array of new   */
  422.         newuserquestlist[NUMNEWUSERQUESTS];     /* user questions */
  423.  
  424. typedef Word Range[256];    /* Range of values for all security levels */
  425.  
  426. /*****************************************************/
  427. /* Provide for full 4D awareness (And point support) */
  428. /*****************************************************/
  429.  
  430. typedef struct      /* Fidonet Style Address (23 Bytes) */
  431. {
  432.     Word Zone;          /* Zone, 1   = N. America */
  433.     Word Net;           /* Net,  120 = SE Michigan */
  434.     Word Node;          /* Node, 116 = CRIMP BBS */
  435.     Word Point;         /* Point, 99% of the time = 0 */
  436.     Char Domain[16];    /* As in FIDONET */
  437. }
  438. AddressType;
  439.  
  440. /*---------------------------------------------------------------------------*/
  441.  
  442. typedef struct      /* System status - STATUS.DAT */
  443. {
  444.     Char AltPath[41];           /* Alternate file path */
  445.     Char DictPath[41];          /* Dictionary path */
  446.  
  447.     Byte DefReadMsgMenu;        /* Wait screen read message menu */
  448.  
  449.     Boolean dynamicmsg;         /* Dynamic message numbering active */
  450.     Boolean dynamicfile;        /* Dynamic file numbering active */
  451.     Boolean waitscreendisable;  /* Wait screen activity disable */
  452.     Boolean requiredvoting;     /* Require voting when user logs on */
  453.  
  454.     Byte automsglines;          /* Auto message number of lines */
  455.     Byte uunewuserexpdays;      /* Reserved */
  456.     Byte addwordsl;             /* Add word to dictionary SL */
  457.  
  458.     Char expvalkey;             /* User expired validation key (#13=None) */
  459.  
  460.     Byte expwarning;            /* # of days to give warning before expires */
  461.     Byte modifymailflags;       /* Sl when allowed to modify mail flags */
  462.     Byte netmailfilerequest;    /* SL for NetMail file requests */
  463.     Byte netmailfileattach;     /* SL for NetMail file attach */
  464.  
  465.     Boolean ModemDebug : 1;     /* Modem debug information written to log */
  466.     Boolean UseXMS : 1;         /* Use XMS memory for swap shell */
  467.     Boolean ShowFilesOpen : 1;  /* Show Files Open on Top Screen */
  468.     Boolean LocalSysopWindow : 1; /* SysOp window when on locally */
  469.     Boolean AllowSuperFast : 1; /* Allow SHIFT password override */
  470.     Boolean WaitSend : 1;       /* FOSSIL buffer inactive */
  471.     Boolean OverlayEMS : 1;     /* Attempt EMS of overlays */
  472.     Boolean EMSOverXMS : 1;     /* Use EMS over XMS memory for swap */
  473.     Boolean DirectScreen : 1;   /* Direct screen writes */
  474.     Boolean UseEMS : 1;         /* Use EMS memory for swap shell */
  475.     Boolean useswap : 1;        /* Use swap shell */
  476.     Boolean UseFossil : 1;      /* Use FOSSIL driver */
  477.     Boolean SnowCheck : 1;      /* Snow checking active */
  478.  
  479.     Byte BrowseDSL;             /* DSL to have U/D commands on */
  480.                                 /*   File Browse Menu          */
  481.  
  482.     Byte uusystatrec1[9];       /* Reserved */
  483.  
  484.     Char TempDlPath[41];        /* Temp File Download Path */
  485.  
  486.     Word MinKpost;              /* Minimum K-Bytes to post */
  487.     Word MinKul;                /* Minimum K-Bytes to upload */
  488.  
  489.     Boolean AutoChatBufOpen;    /* Auto chat buffer open */
  490.  
  491.     Char nettype[21];           /* Multi-user network type */
  492.  
  493.     Byte uusystatrec2[15];      /* Reserved */
  494.  
  495.     Byte LogonPassword;         /* SL when SysOp PW #1 needed to logon */
  496.     Byte ReadTextMsg;           /* SL when allowed to use /READ command */
  497.  
  498.     Boolean AlertChatOnly;      /* Alert active only when chat on */
  499.     Boolean genericinfo;        /* Generic mode active */
  500.     Boolean LogonPhone;         /* Logon requires phone number */
  501.  
  502.     Char DefMsgGroup[21];       /* Default msg section group mask */
  503.     Char DefFileGroup[21];      /* Default file section group mask */
  504.  
  505.     Byte uusystatrec3[13];      /* Reserved */
  506.  
  507.     Char LastCaller[43];        /* Name and number of last caller */
  508.  
  509.     Char MenuFastKeys[21];      /* Menu fast keys (e.g. "/") */
  510.  
  511.     Char BoardPW[17];           /* New user password (Null=None) */
  512.     Char BoardPhone[13];        /* Board phone number */
  513.  
  514.     Byte SysopColor;            /* Chat SysOp color */
  515.     Byte UserColor;             /* Chat user color */
  516.  
  517.     ArFlagType PostCallFlag;    /* Post call ratio AR flag */
  518.  
  519.     Byte NoPostCallChk;         /* SL when post call ratio ignored */
  520.     Byte ReinitTime;            /* Minutes to re-init modem when no calls */
  521.     Byte StartMenu;             /* Starting menu for users */
  522.  
  523.     Boolean UseAutoMsg;         /* Display auto-message during logon */
  524.     Boolean LogonOffHook;       /* Take phone off-hook on local logon */
  525.  
  526.     Byte NoPointChk;            /* DSL when file points ignored */
  527.  
  528.     Char LastDate[9];           /* Date last user logged on */
  529.  
  530.     AddressType Address;        /* Zone/Net/Node/Point/Domain */
  531.  
  532.     Boolean UserOn11x;          /* Use USERON.BBS version 1.1x */
  533.  
  534.     Byte uusystatrec4;          /* Reserved */
  535.  
  536.     shellfilelist shellfile;    /* Shell file information */
  537.  
  538.     Byte uushellfile[10];       /* Reserved for shell files */
  539.  
  540.     newuserquestlist newuserquest; /* New user question information */
  541.  
  542.     Byte uunewuserquest[270];   /* Reserved */
  543.  
  544.     Byte ActiveModemRecNum;     /* Active Modem Record Number */
  545.  
  546.     Char MultiUserPath[41];     /* Multi-user path */
  547.  
  548.     Byte defusereditlist;       /* Default user editor list mode           */
  549.                                 /*   0=short, 1=normal, 2=extended, 3=info */
  550.  
  551.     Byte uusystatrec5[10];      /* Reserved */
  552.  
  553.     Char GfilesPath[41];        /* Main data files path */
  554.  
  555.     Boolean StoreBadLogon;      /* Store bad logon info in SysOp log */
  556.  
  557.     Byte MaxBdNum;              /* Maximum number of batch DL files */
  558.     Byte MaxBuNum;              /* Maximum number of batch UL files */
  559.  
  560.     Char BoardName[49];         /* Board name */
  561.  
  562.     Byte SysopMenuSL;           /* SL required for SysOp Control-Q menu */
  563.     ArFlagType SysopMenuAR;     /* AR flag required from Control-Q menu */
  564.  
  565.     Char SysopName[37];         /* SysOp name */
  566.  
  567.     Char SwapPath[41];          /* Swap shell path */
  568.  
  569.     Char ChatPW[17];            /* Chat password */
  570.  
  571.     Char LastTAGVersion[21];    /* Last version of TAG to run */
  572.  
  573.     Char nodelistpath[41];      /* Nodelist directory */
  574.  
  575.     Byte uusystatrec6[2308];    /* Reserved */
  576.  
  577.     Char SysopPW[3][17];        /* Array of SysOp passwords */
  578.  
  579.     Byte uusystatrec7[120];     /* Reserved */
  580.  
  581.     Real CallerNum;             /* Total number of calls to system */
  582.     Real UlKtoday;              /* K-Bytes uploaded today */
  583.     Real DlkToday;              /* K-Bytes downloaded today */
  584.     Real uur1;                  /* Reserved */
  585.     Real uur2;                  /* Reserved */
  586.     Real uur3;                  /* Reserved */
  587.  
  588.     Word Users;                 /* Number of active users */
  589.     Word ActiveToday;           /* Minutes active today */
  590.     Word Callstoday;            /* Calls today */
  591.     Word MsgPostToday;          /* Public messages posted today */
  592.     Word EmailToday;            /* Private messages posted today */
  593.     Word FbackToday;            /* Feedback sent to SysOp today */
  594.     Word UlToday;               /* Number of uploads today */
  595.     Word uuw1;                  /* Reserved */
  596.     Word uuw2;                  /* Reserved */
  597.     Word uuw3;                  /* Reserved */
  598.     Word MaxUsers;              /* Maximum users allowed to be active */
  599.     Word ErrorsToday;           /* Number of errors today */
  600.     Word NusersToday;           /* Number of new users today */
  601.     Word DlToday;               /* Number of downloads today */
  602.  
  603.     Integer NewUserMsgTo;       /* User number new user message sent to */
  604.     Integer uui1;               /* Reserved */
  605.     Integer SysopMailTo;        /* User number mail to "SYSOP" is sent to */
  606.     Integer GuestUser;
  607.     Integer FailedLogonMsgTo;   /* Guest user number (0=None) */
  608.     Integer uuw5;               /* Reserved */
  609.     Integer UsageLogDays;       /* Number of days to keep USAGE.LOG */
  610.     Integer WaitMailUser;       /* Mail waiting on wait screen (0=none) */
  611.  
  612.     Byte UEditJumpSL;           /* SL required for SysOp Control-U menu */
  613.     ArFlagType UEditJumpAR;     /* AR flag required from Control-U menu */
  614.  
  615.     Byte NoviceDisplay;         /* Number of calls to display novice msg */
  616.  
  617.     Byte NodeNumber;            /* Multi-user node number */
  618.  
  619.     Boolean UEditJumpPassword;  /* Use System pswd for Quick User Edit */
  620.     Boolean ScanOnUploads;      /* System permits forced scan on uploads */
  621.  
  622.     Word MaxTimeInBank;         /* Maximum minutes in time bank */
  623.  
  624.     Boolean ShowGifRes;         /* Show GIF resolution */
  625.     Boolean CheckUploadSpace;   /* Show upload drive space */
  626.     Boolean SystemSecur;        /* Full keyboard security active */
  627.     Boolean MultiUser;          /* Board in multi-user mode */
  628.  
  629.     Byte TBmaxDeposit;          /* Maximum daily time bank deposit */
  630.     Byte TBmaxWithdraw;         /* Maximum daily time bank withdraw */
  631.     Byte SysopLvl;              /* SL for SysOp */
  632.     Byte CoSysopLvl;            /* SL for CoSysOp */
  633.     Byte uub1;                  /* Reserved */
  634.     Byte AddBbsLvl;             /* SL for adding boards to bbs listing */
  635.     Byte EmailLvl;              /* SL for sending normal private mail */
  636.     Byte uub2;                  /* Reserved */
  637.     Byte uub3;                  /* Reserved */
  638.     Byte SeeUnvalLvl;           /* DSL for seeing unvalidated files */
  639.     Byte DlCoSysopLvl;          /* DSL for Download CoSysOp */
  640.     Byte NoRatioChk;            /* DSL for no ratio */
  641.     Byte ReadAnon;              /* SL to know see anonymous real name      */
  642.     Byte ReplyAnon;             /* SL to reply to anonymous private mail   */
  643.     Byte PublicAnonAny;         /* SL to post anonymous on any public base */
  644.     Byte PrivateAnonAny;        /* SL to send private anonymous mail       */
  645.     Byte MaxPublicCall;         /* Maximum public posts per call */
  646.     Byte MaxPrivCall;           /* Maximum private messages per call */
  647.     Byte MaxFbackCall;          /* Maximum feedback to SysOp per call */
  648.     Byte uub4;                  /* Reserved */
  649.     Byte SeePasswords;          /* SL to see user passwords remotely */
  650.     Byte uub5;                  /* Reserved */
  651.     Byte uub6;                  /* Reserved */
  652.     Byte ComPort;               /* Communications port */
  653.     Byte TimeOut;               /* Minutes for inactivity time-out */
  654.     Byte TimeOutBell;           /* Minutes for inactivity bell */
  655.     Byte Backlogdays;           /* Number of days to keep SYSOP.LOG's */
  656.     Byte PrivilegeSL;           /* Privilege SL */
  657.     Byte PrivilegeDSL;          /* Privilege DSL */
  658.     Byte CDmask;                /* Carrier detect mask */
  659.     Byte MaxLogonTries;         /* Maximum logon attempts per call */
  660.     Byte uub7;                  /* Reserved */
  661.     Byte uub8;                  /* Reserved */
  662.     Byte UlTimePercent;         /* UL time percent refund */
  663.     Byte MaxChats;              /* Maximum chat pages per call */
  664.     Byte uub9;                  /* Reserved */
  665.     Byte TagLineSL;             /* SL for tag line command */
  666.  
  667.     Boolean ClosedSystem;       /* System closed */
  668.     Boolean TitlePause;         /* Allow [PAUSE] on welcome screen */
  669.     Boolean LogonBulletin;      /* Logon to the bulletin section */
  670.     Boolean BlankWait;          /* Blank the wait screen if no activity */
  671.     Boolean Handles;            /* Allow handles */
  672.     Boolean AutoANSIDetect;     /* Logon auto-detect ANSI */
  673.     Boolean SecureSystem;       /* Keyboard security active */
  674.     Boolean TimePerDay;         /* Time limits represent time per day */
  675.     Boolean Mailer;             /* External mailer active */
  676.     Boolean SysopFemale;        /* SysOp is female */
  677.     Boolean scantosysoplog;     /* File scans are saved in SysOp log */
  678.  
  679.     Range TimeAllowed;          /* SL array of time per call/per day */
  680.     Range UlDlNumRatio;         /* DSL array of number of file UL ratios */
  681.     Range UlDlKratio;           /* DSL array of K-Byte UL ratios */
  682.     Range CallsAllowed;         /* SL array of calls allowed per day */
  683.     Range PostCall;             /* SL array of posts per 1/10 call */
  684.  
  685.     Byte uusystatrec8[8];       /* Reserved */
  686. }
  687. SystatRec;
  688.  
  689. /*---------------------------------------------------------------------------*/
  690.  
  691. typedef struct      /* Set of menu flags */
  692. {
  693.     Bit SLs : 1;        /* SL security check - When off DSL security check */
  694.     Bit OrCheck : 1;    /* SL or AR - When off SL and AR */
  695.     Bit Flag1 : 1;      /* Time/Help display (menu) -or- */
  696.                         /* Hidden status (command)       */
  697.     Bit Flag2 : 1;      /* Board display override (menu) -or- */
  698.                         /* Link to next (command)             */
  699.     Bit Flag3 : 1;      /* Menu name prompt (menu) -or- */
  700.                         /* Unused (command)             */
  701. }
  702. MenuFlagSet;    /* 1 byte used for 8 flags in set */
  703.  
  704. typedef struct      /* Menus - MENUS.LST */
  705. {
  706.     Char LongD[61];     /* Menu description (menu) -or- */
  707.                         /* Long command desc (command)  */
  708.     Byte GSL;           /* General security level - Depends on SLS */
  709.     ArFlagType ArLvl;   /* AR flag */
  710.     MenuFlagSet Flags;  /* Menu flags */
  711.  
  712.     union   /* Menu or command - Variant section */
  713.     {
  714.         struct      /* Menu information */
  715.         {
  716.             Byte MenuNum;       /* Menu number */
  717.             Char mPrompt[21];   /* Menu prompt unless "flag3" active */
  718.             Char Password[16];  /* Menu password */
  719.             Byte FallBack;      /* Fallback menu number */
  720.             Char HelpFile[8];   /* Help file ID name */
  721.             Byte StartHelp;     /* Starting help level 0=default */
  722.             Byte Location;      /* Menu location                     */
  723.                                 /*   (0=Main, 1=File, 2=ReadMessage) */
  724.         }
  725.         vMenu;
  726.         struct      /* Command information */
  727.         {
  728.             Byte Pkey;          /* Command PKey */
  729.             Char Pdata[21];     /* Command PData */
  730.             Char Shortd[16];    /* Command short description */
  731.             Char CmdKey[13];    /* Command execution key */
  732.         }
  733.         vCommand;
  734.     }
  735.     Menu;
  736. }
  737. MenuRec;
  738.  
  739. /*---------------------------------------------------------------------------*/
  740.  
  741. typedef struct      /* Macro list - MACROS.LST */
  742. {
  743.     Integer UserN;      /* User number of macro owner */
  744.     Char Key[4][161];   /* Text for each of the macros */
  745. }
  746. MacroRec;
  747.  
  748. /*---------------------------------------------------------------------------*/
  749.  
  750. typedef struct      /* Single protocols - SPROT.DAT */
  751. {
  752.     Char Key[13];           /* Execution key */
  753.     Char Desc[61];          /* Description */
  754.     Word MinBaud;           /* Minimum baud rate to use */
  755.     Word MaxBaud;           /* Maximum baud rate to use */
  756.     Byte DSL;               /* DSL required */
  757.     Char TempLog[53];       /* Temp log path and name */
  758.     Char UlLog[53];         /* UL log path and name */
  759.     Char DlLog[53];         /* DL log path and name */
  760.     Char UlString[71];      /* UL string for DOS call */
  761.     Char DlString[71];      /* DL string for DOS call */
  762.     Boolean GoodCode;       /* Result codes mean good transfer */
  763.     Byte DlCode[6];         /* DL error level result codes */
  764.     Byte ULcode[6];         /* DL error level result codes */
  765. }
  766. SprotocolRec;
  767.  
  768. typedef struct      /* Batch protocols - BPROT.DAT */
  769. {
  770.     Char Key[13];           /* Execution key */
  771.     Char Desc[61];          /* Description */
  772.     Word MinBaud;           /* Minimum baud rate to use */
  773.     Word MaxBaud;           /* Maximum baud rate to use */
  774.     Byte DSL;               /* DSL required */
  775.     Char UlString[71];      /* UL string for DOS call */
  776.     Char DlString[71];      /* DL string for DOS call */
  777.     Char UlList[53];        /* UL file list file path and name */
  778.     Char DlList[53];        /* DL file list file path and name */
  779.     Char TempLog[53];       /* Temp log path and name */
  780.     Char UlLog[53];         /* UL log path and name */
  781.     Char DlLog[53];         /* DL log path and name */
  782.     Byte MaxCmdLen;         /* Maximum command line length */
  783.     Byte PosFn;             /* Position of filename in log */
  784.     Byte PosStatus;         /* Position of status in log */
  785.     Boolean GoodCode;       /* Result codes mean good transfer */
  786.     Char DlCode[6][11];     /* DL status result codes */
  787.     Char ULcode[6][11];     /* UL status result codes */
  788. }
  789. BprotocolRec;
  790.  
  791. /*---------------------------------------------------------------------------*/
  792.  
  793. typedef struct      /* Validation information - VALIDATE.DAT */
  794. {
  795.     Char Key;           /* Execution key */
  796.     Char Desc[161];     /* Descrip sent to user after validation */
  797.                         /* 76 max real length - Rest for color */
  798.     Byte SL;            /* SL to set on validation */
  799.     Byte DSL;           /* DSL to set on validation */
  800.     Word Credit;        /* Credit in cents to set on validation */
  801.     Word Points;        /* File points to set on validation */
  802.     Word TimeBank;      /* Time bank minutes to set on validation */
  803.     ArFlagset Ar;       /* AR flags to set on validation */
  804.     FlagSet Flags;      /* Special flags to set on validation */
  805.     Word UnusedWord;    /* Reserved */
  806. }
  807. ValidationRec;
  808.  
  809. /*---------------------------------------------------------------------------*/
  810.  
  811. typedef struct      /* Event flags */
  812. {
  813.     Bit UnknownEvent : 1;       /* 1-1. Unknown */
  814.     Bit EventIsExternal : 1;    /* 1-2. External/Internal */
  815.     Bit EventIsActive : 1;      /* 1-3. Active/InActive */
  816.     Bit EventIsShell : 1;       /* 1-4. Shell/Error */
  817.     Bit EventIsMonthly : 1;     /* 1-5. Monthly/Daily */
  818.     Bit EventIsPermission : 1;  /* 1-6. Permission/Restriction */
  819.     Bit EventIsChat : 1;        /* 1-7. Chat Event */
  820.     Bit EventIsSoft : 1;        /* 1-8. Soft/Hard */
  821.  
  822.     Bit BaudIsActive : 1;       /* 2-1. Baud Rate Flag */
  823.     Bit SLisActive : 1;         /* 2-2. SL Flag */
  824.     Bit DSLisActive : 1;        /* 2-3. DSL Flag */
  825.     Bit ARisActive : 1;         /* 2-4. ARflag required */
  826.     Bit InRatioIsActive : 1;    /* 2-5. InRatioFlag */
  827.     Bit TimeIsActive : 1;       /* 2-6. Time Flag */
  828.     Bit SetARisActive : 1;      /* 2-7. Set AR flag */
  829.     Bit ClearARisActive : 1;    /* 2-8. Clear AR Flag */
  830.  
  831.     Bit uuEvent24 : 1;          /* Byte 3 ... */
  832.     Bit uuEvent23 : 1;
  833.     Bit uuEvent22 : 1;
  834.     Bit uuEvent21 : 1;
  835.     Bit uuEvent20 : 1;
  836.     Bit uuEvent19 : 1;
  837.     Bit uuEvent18 : 1;
  838.     Bit uuEvent17 : 1;
  839.  
  840.     Bit uuEvent16 : 1;          /* Byte 4 ... */
  841.     Bit uuEvent15 : 1;
  842.     Bit uuEvent14 : 1;
  843.     Bit uuEvent13 : 1;
  844.     Bit uuEvent12 : 1;
  845.     Bit uuEvent11 : 1;
  846.     Bit uuEvent10 : 1;
  847.     Bit uuEvent9 : 1;
  848.  
  849.     Bit uuEvent81 : 1;          /* Byte 5 ... */
  850.     Bit uuEvent7 : 1;
  851.     Bit uuEvent6 : 1;
  852.     Bit uuEvent5 : 1;
  853.     Bit uuEvent4 : 1;
  854.     Bit uuEvent3 : 1;
  855.     Bit uuEvent2 : 1;
  856.     Bit uuEvent1 : 1;
  857. }
  858. EventType;  /* 5 bytes used for 40 flags */
  859.  
  860. typedef Byte EventDaysType;     /* Set of event days     */
  861.                                 /* (bits 0-6 = Sun..Sat) */
  862.  
  863. /*****************************************/
  864. /* The Record Structure of the EventFile */
  865. /*****************************************/
  866.  
  867. typedef struct      /* Events - EVENTS.DAT */
  868. {
  869.     EventType EventFlags;       /* Kinds of Events Supported */
  870.     Byte EventDayOfMonth;       /* If monthly, the Day of Month */
  871.     EventDaysType EventDays;    /* If Daily, the Days Active */
  872.     Word EventStartTime;        /* Start Time in Min from Mid. */
  873.     Word EventFinishTime;       /* Finish Time */
  874.     Char EventDesc[33];         /* Description of the Event */
  875.     Char EventQualMsg[65];      /* Msg/Path if he qualifies */
  876.     Char EventNotQualMsg[65];   /* Msg/Path if he doesn't */
  877.     Byte EventPreTime;          /* Min. B4 event to rest. Call */
  878.     Boolean EventOffHook;       /* Take phone Offhook ? */
  879.     Char EventLastDate[9];      /* Last Date Executed */
  880.     Byte EventErrorLevel;       /* For Ext Event ErrorLevel */
  881.     Char EventShellPath[9];     /* File for Ext Event Shell */
  882.     Word LoBaud;                /* Low baud rate limit */
  883.     Word HiBaud;                /* High baud rate limit */
  884.     Byte LoSL;                  /* Low SL limit */
  885.     Byte HiSL;                  /* High SL limit */
  886.     Byte LoDSL;                 /* Low DSL limit */
  887.     Byte HiDSL;                 /* High DSL limit */
  888.     Char ARflagRequired;        /* AR flag required */
  889.     Word MaxTimeAllowed;        /* Max Time per user this event */
  890.     Char SetARflag;             /* AR Flag to Set */
  891.     Char ClearARflag;           /* AR Flag to Clear */
  892.     Byte EventUnused[128];      /* Reserved */
  893. }
  894. EventRecordType;
  895.  
  896. /*---------------------------------------------------------------------------*/
  897.  
  898. #define MAXMODEMRESULTCODES 45  /* Maximum number of modem result codes */
  899.  
  900. typedef Byte modemresulttype;   /* Modem result type */
  901.  
  902. #define RESULTERROR             0       /* Command error */
  903. #define RESULTOK                1       /* Command accepted */
  904. #define RESULTRING              2       /* Phone ringing */
  905. #define RESULTNOCARRIER         3       /* Connect attempt failed */
  906. #define RESULTCONNECT           4       /* Connect succcessful */
  907. #define RESULTWAITSCREEN        5       /* Go to wait screen */
  908. #define RESULTLOCALLOGON        6       /* Logcal logon */
  909. #define RESULTSHELLBATCH        7       /* Shell to batch file */
  910. #define RESULTEXITERRORLEVEL    8       /* Exit system with error level */
  911. #define RESULTEXITSYSTEM        9       /* Exit system with error level 255 */
  912. #define RESULTNODIALTONE        10      /* Reserved */
  913. #define RESULTRINGING           11      /* Reserved */
  914. #define RESULTBUSY              12      /* Reserved */
  915. #define RESULTNOANSWER          13      /* Reserved */
  916. #define RESULTVOICE             14      /* Reserved */
  917.  
  918. typedef struct
  919. {
  920.     modemresulttype typeofresult;   /* Type of result */
  921.     Char result[51];                /* Test of result */
  922.     Longint connectrate;            /* Connect rate modem to modem */
  923.     Longint realrate;               /* Real rate computer to modem */
  924.     Longint controlcode;            /* Error level or startup code */
  925.     Boolean fullduplex;             /* Full duplex operation? */
  926.     Boolean errorcorrecting;        /* Error correcting modem? */
  927.     Byte Unused[8];                 /* Reserved */
  928. }
  929. resultrec;
  930.  
  931. /**********************************************************/
  932. /* Modem string mapping codes:                            */
  933. /*                                                        */
  934. /* Char.  Name             Action                         */
  935. /* -----  ---------------  ------------------------------ */
  936. /*  ^     Carat            Control code of next character */
  937. /*  |     Pipe, Split Bar  Carriage return sent           */
  938. /*  `     Accent Mark      1/20th second delay            */
  939. /*  ~     Tilde            1/2 second delay               */
  940. /*  ^-    Carat & Minus    Lower DTR line                 */
  941. /*  ^+    Carat & Plus     Raise DTR line                 */
  942. /**********************************************************/
  943.  
  944. typedef struct      /* Modem record - MODEM.DAT */
  945. {
  946.     Boolean uuunused;           /* Unused */
  947.     Char modemdescription[65];  /* Description on modem */
  948.     Byte characterdelay;        /* Miliseconds */
  949.     Boolean ctsrts;             /* Hardware flow control active */
  950.     Boolean samering;           /* Reserved */
  951.     Boolean nocollide;          /* Reserved */
  952.     Byte numberresults;         /* Number of modem result codes defined */
  953.     resultrec result[MAXMODEMRESULTCODES]; /* Array of results */
  954.     Char preinitialization[64]; /* Pre-initialization string */
  955.     Char initialization[65];    /* Initialization string */
  956.     Char answer[65];            /* Answer string */
  957.     Char busy[65];              /* Busy string */
  958.     Char hangupprimary[65];     /* Hangup primary string */
  959.     Char hangupsecondary[65];   /* Hangup secondard string */
  960.     Char afterhangup[65];       /* After hangup string */
  961.     Char exitsystem[65];        /* Exit system string */
  962.     Char predial[65];           /* Reserved */
  963.     Char dialprefix[65];        /* Reserved */
  964.     Char dialsuffix[65];        /* Reserved */
  965.     Longint waitbaud;           /* Init modem speed */
  966.     Boolean lockedbaud;         /* Is baud rate locked - Not used by T.A.G. */
  967.     Byte ecefficiency;          /* Error correcting efficiency */
  968.     Byte ncefficiency;          /* Normal connect efficiency */
  969.     Byte Unused[249];           /* Reserved */
  970. }
  971. modemrec;
  972.  
  973. /*---------------------------------------------------------------------------*/
  974.  
  975. #define MAXSUBOPS   10      /* Maximum number of message section SubOps */
  976.  
  977. typedef Byte NoYesForcedType;   /* Message section type */
  978.  
  979. #define NO          0       /* Anonymous messages not allowed */
  980. #define YES         1       /* Anonymous messages allowed */
  981. #define FORCED      2       /* Messages forced anonymous */
  982. #define ATUNUSED    3       /* Reserved */
  983.  
  984. /************************************/
  985. /* Standard Attributes for Messages */
  986. /************************************/
  987.  
  988. typedef struct
  989. {
  990.     Bit Msg_Private : 1;                    /* 1  fPrivate  */
  991.                                             /*    RaPrivate */
  992.     Bit Msg_Crash : 1;                      /* 2  fCrash */
  993.                                             /*    Crash  */
  994.     Bit Msg_Received : 1;                   /* 3  fReceived */
  995.                                             /*    Received  */
  996.     Bit Msg_Sent : 1;                       /* 4  fSent */
  997.                                             /*    Sent  */
  998.     Bit Msg_FileAttached : 1;               /* 5  fFileAttached */
  999.                                             /*    FileAttach    */
  1000.     Bit Msg_KillSent : 1;                   /* 6  fKillSent */
  1001.                                             /*    KillSent  */
  1002.     Bit Msg_Local : 1;                      /* 7  fLocal       */
  1003.                                             /*    LocalMessage */
  1004.     Bit Msg_ReturnReceiptRequest : 1;       /* 8  fReportReceiptRequest */
  1005.                                             /*    RequestReceipt        */
  1006.     Bit Msg_IsReturnReceipt : 1;            /* 9  fIsReturnReceipt */
  1007.                                             /*    ReturnReceipt    */
  1008.     Bit Msg_AuditRequest : 1;               /* 10 fAuditRequest */
  1009.                                             /*    AuditRequest  */
  1010.     Bit Msg_Fido_InTransit : 1;             /* 11 fInTransit */
  1011.     Bit Msg_Fido_Orphan : 1;                /* 12 fOrphan */
  1012.     Bit Msg_Fido_HoldForPickup : 1;         /* 13 fHoldForPickup */
  1013.     Bit Msg_Fido_Unusedbit10 : 1;           /* 14 fUnusedbit10 */
  1014.     Bit Msg_Fido_FileRequest : 1;           /* 15 fFileRequest */
  1015.     Bit Msg_Fido_FileUpdateRequest : 1;     /* 16 fFileUpdateRequest */
  1016.     Bit Msg_Ra_Deleted : 1;                 /* 17 Deleted */
  1017.     Bit Msg_Ra_NetmailPendingExport : 1;    /* 18 NetmailPendingExport */
  1018.     Bit Msg_Ra_NetMailMessage : 1;          /* 19 NetMailMessage */
  1019.     Bit Msg_Ra_EchomailPendingExport : 1;   /* 20 EchomailPendingExport */
  1020.     Bit Msg_Ra_UnusedMsgbit7 : 1;           /* 21 UnusedMsgbit7 */
  1021.     Bit Msg_Ra_UnusedNetbit7 : 1;           /* 22 UnusedNetbit7 */
  1022.     Bit Msg_Unused_Attr1 : 1;               /* 23 Reserved */
  1023.     Bit Msg_Unused_Attr2 : 1;               /* 24 Reserved */
  1024.     Bit Msg_Unused_Attr3 : 1;               /* 25 Reserved */
  1025.     Bit Msg_Unused_Attr4 : 1;               /* 26 Reserved */
  1026.     Bit Msg_Unused_Attr5 : 1;               /* 27 Reserved */
  1027.     Bit Msg_Unused_Attr6 : 1;               /* 28 Reserved */
  1028.     Bit Msg_Unused_Attr7 : 1;               /* 29 Reserved */
  1029.     Bit Msg_Unused_Attr8 : 1;               /* 30 Reserved */
  1030.     Bit Msg_Unused_Attr9 : 1;               /* 31 Reserved */
  1031.     Bit Msg_Unused_Attr10 : 1;              /* 32 Reserved */
  1032. }
  1033. MessageAttrFlagSet;     /* 4 bytes used for 32 flags */
  1034.  
  1035. typedef Byte MBstyle;   /* Message section style flags */
  1036.  
  1037. #define UUMBBSTYLE      0   /* Was For Private Mail Board */
  1038. #define LOCALSTYLE      1   /* Local Board */
  1039. #define ECHOSTYLE       2   /* Echomail, Needs Origin */
  1040. #define NETMAILSTYLE    3   /* Netmail board (Only one I hope!) */
  1041. #define GROUPSTYLE      4   /* For Groupmail Support */
  1042.  
  1043. typedef Byte MBtype;    /* Message section type flags */
  1044.  
  1045. #define UUMBTYPE        0   /* Was For Netmail Board */
  1046. #define FIDOFORMAT      1   /* Fido 1.Msg Format */
  1047. #define RAFORMAT        2   /* Remote Access Format */
  1048.  
  1049. typedef struct      /* Message boards - MBOARDS.DAT */
  1050. {
  1051.     Char Name[65];                  /* Name of the Board */
  1052.     MBstyle Mstyle;                 /* Local/Echo/Netmail */
  1053.     MBtype Mtype;                   /* Message Board Type */
  1054.     Byte RaBoard;                   /* Board Number if RA/QBBS type */
  1055.     Char Path[65];                  /* Directory PathName */
  1056.     Char OriginLine[66];            /* Origin Line */
  1057.     ArFlagType AccessAR;            /* AR flag Required to Access */
  1058.     ArFlagType PostAR;              /* AR flag required to Post */
  1059.     Byte AccessSL;                  /* Security Level Required to Access */
  1060.     Byte PostSL;                    /* Security Level Required to Post */
  1061.     Word MsgCount;                  /* Count of Msgs on the Board */
  1062.     Word MaxMsgs;                   /* Max Number of Messages */
  1063.     Word uuMaxOld;                  /* Max Days for Messages */
  1064.     Char Password[17];              /* Password Required */
  1065.     NoYesForcedType Anon;           /* Anonymous Type */
  1066.     Boolean AllowAnsi;              /* Should we allow ANSI */
  1067.     NoYesForcedType AllowHandle;    /* Should we allow handles */
  1068.  
  1069.     /*********************************************************/
  1070.     /* Message Board SubOpts List  - Up to 10 - User Numbers */
  1071.     /*********************************************************/
  1072.  
  1073.     Integer SubOps[MAXSUBOPS];      /* SubOps - Item 0 = How many */
  1074.  
  1075.     Char EchoTag[33];               /* Echo Tag for Writing ECHOMAIL.BBS */
  1076.     Boolean UseOtherAddress;        /* Use something other than system */
  1077.     Byte OldOtherAddress[23];       /* Unused */
  1078.     Byte MenuNumber;                /* Default read message number */
  1079.                                     /*  (if 0, use system default) */
  1080.     Char PrePostFile[9];            /* Prepost file name */
  1081.     Byte MinMsgs;                   /* Minimum number of messages */
  1082.     Char QuoteStart[71];            /* Override starting quote */
  1083.     Char QuoteEnd[71];              /* Override ending quote */
  1084.     Byte OldDefaultAtt[2];          /* Unused */
  1085.     Byte GroupNumber;               /* What group the board belongs */
  1086.     AddressType OtherAddress;       /* The Address to use! */
  1087.     NoYesForcedType RestrictPrivate; /* Private mail status */
  1088.     MessageAttrFlagSet DefaultAttr; /* Default message flags */
  1089.     Byte Reserved[12];              /* Reserved */
  1090. }
  1091. MboardType;
  1092.  
  1093. /*---------------------------------------------------------------------------*/
  1094.  
  1095. typedef Char LastOnType[8][161];    /* Last Few Callers - LASTON.DAT */
  1096.  
  1097. /*---------------------------------------------------------------------------*/
  1098.  
  1099. #define MAXBITS     1024    /* Means a 128 byte bit set, bits 0 to 1023 */
  1100.  
  1101. typedef Byte bitSetType[MAXBITS / 8];   /* Board Flags - ?ZSCAN.DAT */
  1102.  
  1103. /*---------------------------------------------------------------------------*/
  1104.  
  1105. typedef struct      /* Who's online - $WHO.DAT */
  1106. {
  1107.     Boolean Active;
  1108.     Byte Node;              /* Node number for this rec     */
  1109.     Boolean Available;      /* Is he available for anything */
  1110.     Char Uname[37];         /* Users Name                   */
  1111.     Char CityState[31];     /* City and State               */
  1112.     Longint Baud;           /* Baud Rate                    */
  1113.     Byte Paging;            /* Paging Node Number           */
  1114.     Byte InPrivateChat;     /* Node in private chat with    */
  1115.     Boolean InGroupChat;    /* Is he in Group Chat          */
  1116.     Char Desc[65];          /* Long Description             */
  1117. }
  1118. WhoRecType;
  1119.  
  1120. /*---------------------------------------------------------------------------*/
  1121.  
  1122. typedef struct      /* USERON.BBS file version 1.00 */
  1123. {
  1124.     Char Name[36];          /* User name      */
  1125.     Byte Line;              /* Node number    */
  1126.     Word Baud;              /* Connect rate   */
  1127.     Char City[26];          /* City/State     */
  1128.     Boolean DoNotDisturb;   /* Do not disturb */
  1129.     Byte Status;            /* Status         */
  1130. }
  1131. UserOnType100;
  1132.  
  1133. /*---------------------------------------------------------------------------*/
  1134.  
  1135. typedef struct      /* USERON.BBS file version 1.1x */
  1136. {
  1137.     Char Name[36];          /* Real name      */
  1138.     Char Handle[36];        /* User name      */
  1139.     Byte Line;              /* Node number    */
  1140.     Word Baud;              /* Connect rate   */
  1141.     Char City[26];          /* City/State     */
  1142.     Boolean DoNotDisturb;   /* Do not disturb */
  1143.     Byte Status;            /* Status         */
  1144.     Byte Attribute;         /* Attribute      */
  1145. }
  1146. UserOnType11x;
  1147.  
  1148. /*---------------------------------------------------------------------------*/
  1149.  
  1150. #endif
  1151.